package com.aasa.siccosap.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.sql.DataSource;

import oracle.jdbc.OracleTypes;

import org.apache.log4j.Logger;



import com.aasa.siccosap.bean.CobranzaBean;
import com.aasa.siccosap.bean.EmpresaBean;
import com.aasa.siccosap.bean.RegionBean;

public class CobranzaDao extends ConsultaClienteBaseDAO{
	
	
	static Logger logger = Logger.getLogger("ConsultaClienteBaseDAO.class");
	public CobranzaDao()	throws accesoDaoException {
		super();
	}
	
	public CobranzaDao(DataSource dataSource) {
		super(dataSource);
	}

	public CobranzaBean cargaInicial() throws accesoDaoException {
		
		 ResultSet rs = null;
		 ResultSet rs2 = null;
		
		CobranzaBean objL_bean = new CobranzaBean(); 
		ArrayList<EmpresaBean> aobjL_empresaBean = new ArrayList<EmpresaBean>();
		ArrayList<RegionBean> aobjL_regionBean = new ArrayList<RegionBean>();
		
		storedProcedure="BEGIN CONSULTA_CLIENTES_PKG1.UTIL_INICIO(?,?,?); END;";
		try {
			
			 conn = dataSource.getConnection();
             stmt = conn.prepareCall(storedProcedure);
             
					
			stmt.registerOutParameter(1, OracleTypes.CURSOR);
			stmt.registerOutParameter(2, OracleTypes.CURSOR);
			stmt.registerOutParameter(3, OracleTypes.VARCHAR);
			stmt.execute();
			
			rs = (ResultSet) stmt.getObject(1);
			rs2 = (ResultSet) stmt.getObject(2);
			String strPv_fecha = stmt.getString(3);
			
			while (rs.next()) {
				EmpresaBean objL_empresaBean = new EmpresaBean();
				objL_empresaBean.setStrPb_codigoEmpresa((rs.getString("COD_EMP")));
				objL_empresaBean.setStrPb_razonSocial((rs.getString("RAZ_SOC_EMP")));
				aobjL_empresaBean.add(objL_empresaBean);
			}
			
			while (rs2.next()) {
				RegionBean objL_regionBean = new RegionBean();
				objL_regionBean.setStrPb_disCodDis((rs2.getString("DIS_COD_DIS")));
				objL_regionBean.setStrPb_desEmpDis((rs2.getString("DES_DIS")));
				aobjL_regionBean.add(objL_regionBean);
			}
			
			objL_bean.setAobjPv_empresa(aobjL_empresaBean);			
			objL_bean.setAobjPv_region(aobjL_regionBean);			
			objL_bean.setStrPv_fechaFin(strPv_fecha);
			
		} catch (SQLException e) {
			//e.printStackTrace();			
			throw new accesoDaoException(
					"DAO: Error en la Carga Inicial - SCAcedim.", e);
		} finally {
			close(conn, null, stmt);
		}
		return objL_bean;	
		
		
	}

	public Connection getConexion() throws accesoDaoException
	  {					
			try {
				conn = dataSource.getConnection();
			} catch (SQLException e) {	
				e.printStackTrace();
				throw new accesoDaoException("No puedo establecer conexion " , e );
			} 	 
			return conn;	    	
	 }
	
	
	
	

}
